package com.example.demo.designpattern.danlimoshi;

public class D4 {

    private static volatile D4 instance;

    private D4() {
    }

    public static D4 getInstance() {
        //第一个 if 语句用来避免 uniqueInstance 已经被实例化之后的加锁操作
        if (null == instance) {
            // 加锁
            synchronized (D4.class) {
                //第二个 if 语句进行了加锁，所以只能有一个线程进入，就不会出现 instance == null 时两个线程同时进行实例化操作
                if (null == instance) {
                    instance = new D4(); //第10行
                }
            }
        }
        return instance;
    }
}
